CSS @optimize ๋๋ ํฐ๋ธ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค์ธ์. ์ต์ ์ ๋ก๋ฉ ์๊ฐ๊ณผ ๋ ๋๋ง ํจ์จ์ฑ์ ์ํด ์ด ๋๋ ํฐ๋ธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
์ต๊ณ ์ฑ๋ฅ ์ ๊ธ ํด์ : CSS @optimize ๋๋ ํฐ๋ธ ์ข ํฉ ๊ฐ์ด๋
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ก๋ฉ์ด ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์๋ฅผ ์ค๋ง์ํฌ ๋ฟ๋ง ์๋๋ผ ๊ฒ์ ์์ง ์์์ ์ ํ์จ์๋ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ ์ฒด ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ธฐ์ฌํ๋ ์์๋ ๋ค์ํ์ง๋ง, CSS๊ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ฐ๋ก ์ด๋ CSS @optimize ๋๋ ํฐ๋ธ๊ฐ ๋ฑ์ฅํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ต์ ์ ์ฑ๋ฅ์ ์ํด CSS ๋ก๋ฉ ๋ฐ ๋ ๋๋ง ๋์์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์๋๋ก ์ค๊ณ๋ ๊ฐ๋ ฅํ (ํ์ฌ๋ ์คํ์ ์ธ) ๋๊ตฌ ๋ชจ์์
๋๋ค.
CSS @optimize ๋๋ ํฐ๋ธ๋ ๋ฌด์์ธ๊ฐ?
@optimize ๋๋ ํฐ๋ธ๋ ๊ฐ๋ฐ์์๊ฒ CSS๊ฐ ํ์ฑ, ๋ก๋ ๋ฐ ์ ์ฉ๋๋ ๋ฐฉ์์ ๋ํด ๋ ์ธ๋ฐํ ์ ์ด๊ถ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ CSS ์ฌ์์ ์ ์๋ ์ถ๊ฐ ๊ธฐ๋ฅ์
๋๋ค. ์ด ๋๋ ํฐ๋ธ๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ํํธ ์ญํ ์ ํ์ฌ, ๋ ๋น ๋ฅธ ๋ ๋๋ง์ ์ํด CSS ์คํ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ต์ ํํ๋๋ก ์๋ดํฉ๋๋ค. 2023๋
ํ๋ฐ ๊ธฐ์ค์ผ๋ก @optimize๋ ์์ง ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฆฌ ์ง์๋์ง ์์ผ๋ฉฐ ์คํ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ๋จ์ ์๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ๋ก๋์
ํ๊ฒฝ์ ๊ตฌํํ๊ธฐ ์ ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ์ธํ์ธ์. ์ด ๊ฐ์ด๋๋ ์ด๋ฌํ ๋๋ ํฐ๋ธ์ *์ ์ฌ๋ ฅ*์ ํ๊ตฌํ๊ณ ์์ ํ ๊ตฌํ๋์์ ๋ *์ด๋ป๊ฒ* ์ฌ์ฉ๋ ์ ์๋์ง์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก @optimize ๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ค์์ ์๋ฆด ์ ์์ต๋๋ค:
- ์ด๋ค CSS ๊ท์น์ด ์ด๊ธฐ ๋ ๋๋ง(ํ์ด์ง ์๋จ ์ฝํ ์ธ )์ ์ค์ํ์ง.
- ์ด๋ค CSS ๊ท์น์ด ์ด๊ธฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋์ค์ ๋ก๋ ๋ฐ ์ ์ฉ๋ ์ ์๋์ง.
- ์ ์ฌ์ ์ผ๋ก ๋ ๋๋ง์ ์ฐจ๋จํ๋ CSS ๋ฆฌ์์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ.
์ด๋ฌํ ํํธ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์น์ฌ์ดํธ๊ฐ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํญ ๋จ์ถํ์ฌ ๋ ๋ถ๋๋ฝ๊ณ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฃผ์ @optimize ๋๋ ํฐ๋ธ (์ ์)
์ ํํ ๊ตฌ๋ฌธ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ ํฐ๋ธ๋ ์ฌ์์ด ํ์ ๋จ์ ๋ฐ๋ผ ๋ฐ์ ํ ์ ์์ง๋ง, ๋ค์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ๋
ผ์๋๊ณ ์์๋๋ @optimize ๋๋ ํฐ๋ธ ์ค ์ผ๋ถ์
๋๋ค:
1. @optimize priority
@optimize priority ๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ CSS ๊ท์น์ ์๋์ ์ค์๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์ํ ์คํ์ผ์ ๋ก๋ฉ ๋ฐ ์ ์ฉ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐ ๋์์ ์ฃผ์ด ๊ฐ์ฅ ์ค์ํ ์ฝํ
์ธ ๊ฐ ๋น ๋ฅด๊ฒ ๋ ๋๋ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
์์:
@optimize priority high {
body {
font-family: Arial, sans-serif;
font-size: 16px;
color: #333;
}
.header {
background-color: #f0f0f0;
padding: 20px;
}
}
@optimize priority low {
.footer {
background-color: #eee;
padding: 10px;
}
.sidebar {
width: 200px;
float: left;
}
}
์ด ์์์์ body์ .header์ ๋ํ ์คํ์ผ์ high(๋์) ์ฐ์ ์์๋ก ํ์๋ ๋ฐ๋ฉด, .footer์ .sidebar์ ๋ํ ์คํ์ผ์ low(๋ฎ์) ์ฐ์ ์์๋ก ํ์๋์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋์ ์ฐ์ ์์์ ์คํ์ผ์ ๋จผ์ ๋ก๋ํ๊ณ ์ ์ฉํ์ฌ ์ด๊ธฐ ํ์ด์ง ๋ ์ด์์๊ณผ ํต์ฌ ์ฝํ
์ธ ๊ฐ ์ ์ํ๊ฒ ๋ ๋๋ง๋๋๋ก ํฉ๋๋ค.
2. @optimize lazy-load
@optimize lazy-load ๋๋ ํฐ๋ธ๋ ํน์ CSS ๊ท์น์ด ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์์ ์ด์ง ์์ผ๋ฉฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ ๋ฐ ์ ์ฉ๋ ์ ์์์ ๋ํ๋
๋๋ค. ์ด๋ ํ๋ฉด ํ๋จ ์ฝํ
์ธ ๋ ํน์ ์ํธ์์ฉ์๋ง ํ์ํ ์คํ์ผ์ ํนํ ์ ์ฉํฉ๋๋ค.
์์:
@optimize lazy-load {
.carousel {
/* Styles for a carousel component */
}
.animations {
/* Styles for animations */
}
}
์ฌ๊ธฐ์ .carousel๊ณผ .animations ํด๋์ค์ ๋ํ ์คํ์ผ์ ์ง์ฐ ๋ก๋ฉ(lazy loading)์ผ๋ก ํ์๋ฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๊ธฐ ํ์ด์ง ๋ ๋๋ง ์ดํ๊น์ง ์ด๋ฌํ ์คํ์ผ์ ๋ก๋ฉ์ ์ง์ฐ์ํฌ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์น์ฌ์ดํธ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
3. @optimize block
@optimize block ๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด CSS ๋ฆฌ์์ค๊ฐ ํ์ด์ง ๋ ๋๋ง์ ์ฐจ๋จํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก CSS ์คํ์ผ์ํธ๋ ๋ ๋๋ง์ ์ฐจ๋จํ๋ฏ๋ก, ๋ธ๋ผ์ฐ์ ๋ ์คํ์ผ์ํธ๊ฐ ๋ค์ด๋ก๋๋๊ณ ํ์ฑ๋ ๋๊น์ง ํ์ด์ง ๋ ๋๋ง์ ๊ธฐ๋ค๋ฆฝ๋๋ค. @optimize block ๋๋ ํฐ๋ธ๋ ์ด ๋์์ ๋ณ๊ฒฝํ ์ ์๋ ์ต์
์ ์ ๊ณตํฉ๋๋ค.
์์:
@optimize block never {
<link rel="stylesheet" href="styles.css">
}
์ด ์์๋ ์ฐ๊ด๋ ์คํ์ผ์ํธ๋ฅผ *๋น์ฐจ๋จ(non-blocking)*์ผ๋ก ํ์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ `styles.css`๊ฐ ๋ค์ด๋ก๋๋๋ ๋์์๋ HTML ํ์ฑ์ ๊ณ์ํ๊ณ ํ์ด์ง ๋ ๋๋ง์ ์์ํฉ๋๋ค. `<link` ์ฐธ์กฐ๊ฐ `@optimize block` ๋๋ ํฐ๋ธ ๋ด์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์. ์ด๊ฒ์ด ์๋ง๋ ์ ์์ด ์ต์ข ์ ์ผ๋ก ๊ตฌ์ฒดํ๋ ๋ฐฉ์์ผ ๊ฒ์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ ๋ก๋ฉ ๋์์ ์ธ๋ถ ์คํ์ผ์ํธ์ ์ฐ๊ด์ํฌ ์ ์๋๋ก ํ ๊ฒ์ ๋๋ค.
4. @optimize inline
์๋ฐํ ๋งํด *๋๋ ํฐ๋ธ*๋ ์๋์ง๋ง, ์ค์ํ CSS๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ฝ์
ํ๋ ๊ฒ์ @optimize ์ ๊ทผ ๋ฐฉ์๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉ๋๋ ๊ฐ๋ ฅํ ์ต์ ํ ๊ธฐ๋ฒ์
๋๋ค. HTML <style> ํ๊ทธ ์์ CSS ๊ท์น์ ์ง์ ํฌํจ์ํค๋ฉด ์ธ๋ถ ์คํ์ผ์ํธ์ ๋ํ ์๋ณต ์์ฒญ์ ์ ๊ฑฐํ์ฌ ์ด๊ธฐ ๋ ๋๋ง ์๊ฐ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์:
<head>
<style>
body {
font-family: Arial, sans-serif;
font-size: 16px;
color: #333;
}
/* More critical CSS rules */
</style>
</head>
ํ์ด์ง ์๋จ ์ฝํ ์ธ ์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์ํ ์ค์ํ CSS ๊ท์น์ด HTML์ ์ง์ ํฌํจ๋์ด ์ธ๋ถ ์์ฒญ ์์ด ์ฆ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ข ์ข ๋น๋ ๋๊ตฌ๋ฅผ ํตํด ์๋ํ๋ฉ๋๋ค.
CSS @optimize ๋๋ ํฐ๋ธ ์ฌ์ฉ์ ์ด์
CSS @optimize ๋๋ ํฐ๋ธ ์ฌ์ฉ์ ์ ์ฌ์ ์ด์ ์ ์๋นํฉ๋๋ค:
- ํฅ์๋ ์น์ฌ์ดํธ ์ฑ๋ฅ: ์ค์ํ CSS์ ์ฐ์ ์์๋ฅผ ์ง์ ํ๊ณ ํ์์ ์ด์ง ์์ ์คํ์ผ์ ์ง์ฐ์ํด์ผ๋ก์จ ์น์ฌ์ดํธ๊ฐ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋นจ๋ฆฌ ๋ก๋๋๋ ์น์ฌ์ดํธ๋ ๋ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค. ์ฌ์ฉ์๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๊ณ ์ํธ์์ฉ์ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ์น์ฌ์ดํธ๋ฅผ ๋ ์ดํํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
- ๋ ๋์ ๊ฒ์ ์์ง ์์: ๊ตฌ๊ธ๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์ ์น์ฌ์ดํธ ์๋๋ฅผ ์์ ๊ฒฐ์ ์์ธ์ผ๋ก ๊ณ ๋ คํฉ๋๋ค. CSS๋ฅผ ์ต์ ํํ๋ฉด ์น์ฌ์ดํธ์ ๊ฒ์ ์์ง ์์๋ฅผ ํฅ์์์ผ ๋ ๋ง์ ์ ๊ธฐ์ ํธ๋ํฝ์ ์ ๋ํ ์ ์์ต๋๋ค.
- ๊ฐ์๋ ๋์ญํญ ์๋น: ์ค์ํ์ง ์์ CSS๋ฅผ ์ง์ฐ ๋ก๋ฉํจ์ผ๋ก์จ, ํนํ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํด์ผ ํ๋ ๋ฐ์ดํฐ ์์ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ ๋๋ง์ ๋ํ ๋ ํฐ ์ ์ด๊ถ: ์ด ๋๋ ํฐ๋ธ๋ค์ ๋ ๋๋ง ๊ณผ์ ์ ๋ํด ๋ ์ธ๋ฐํ ์ ์ด๊ถ์ ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ์๊ฐ ํน์ ์๊ตฌ์ ๋ง๊ฒ CSS์ ๋ก๋ฉ ๋ฐ ์ ์ฉ์ ์กฐ์ ํ ์ ์๋ ๋ฅ๋ ฅ์ ๋ถ์ฌํฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
๋ค์ํ ์๋๋ฆฌ์ค์์ @optimize ๋๋ ํฐ๋ธ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ
์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ์์ ์ ํ ๋ชฉ๋ก ํ์ด์ง๋ ์ข
์ข
๋งค์ถ ์ฆ๋์ ๋งค์ฐ ์ค์ํฉ๋๋ค. @optimize priority๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ์ด๋ฏธ์ง, ์ ๋ชฉ, ๊ฐ๊ฒฉ ๋ ๋๋ง์ ๋ด๋นํ๋ CSS ๊ท์น์ ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ ์ด๋ฌํ ์์๊ฐ ์ ์ํ๊ฒ ํ์๋๋๋ก ํ ์ ์์ต๋๋ค. ๋ํ @optimize lazy-load๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ์์ธ ํ์ด์ง๋ ์ด๋ฏธ์ง ์บ๋ฌ์
๊ณผ ๊ฐ์ ์ํธ์์ฉ ์์์๋ง ํ์ํ CSS ๊ท์น์ ๋ก๋ฉ์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค.
2. ๋ด์ค ์น์ฌ์ดํธ
๋ด์ค ์น์ฌ์ดํธ์ ๊ฒฝ์ฐ, ํค๋๋ผ์ธ๊ณผ ๋์
๋จ๋ฝ์ ๋
์์ ์ฃผ์๋ฅผ ๋๋ ๋ฐ ํ์์ ์
๋๋ค. @optimize priority๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์์๋ฅผ ๋ ๋๋งํ๋ CSS ๊ท์น์ ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ ์ต๋ํ ๋นจ๋ฆฌ ๋ณด์ด๋๋ก ํ ์ ์์ต๋๋ค. ๋ํ @optimize lazy-load๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ธ์ด๋ ๊ด๋ จ ๊ธฐ์ฌ ํ์์๋ง ํ์ํ CSS ๊ท์น์ ๋ก๋ฉ์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค.
3. ๋ธ๋ก๊ทธ
๋ธ๋ก๊ทธ์์๋ ๊ธฐ์ฌ์ ์ฃผ์ ์ฝํ
์ธ ๊ฐ ๊ฐ์ฅ ์ค์ํ ์์์
๋๋ค. @optimize priority๋ก ์ด๊ฒ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ์ธ์. ์์
๋ฏธ๋์ด ๊ณต์ ๋ฒํผ, ๋๊ธ ์น์
๋๋ ๊ด๋ จ ๊ธฐ์ฌ์ ๋ํ ์คํ์ผ์ @optimize lazy-load๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ฐ์ํค์ธ์. ์ฌ์ดํธ ํค๋์ ๊ธฐ๋ณธ ํ์ดํฌ๊ทธ๋ํผ์ ๋ํ ์ค์ํ CSS๋ ์ฆ๊ฐ์ ์ธ ๋ ๋๋ง์ ๋ณด์ฅํ๊ธฐ ์ํด ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๊ตฌํ ์ ๋ต (์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ฉด)
@optimize ๋๋ ํฐ๋ธ๊ฐ ๋๋ฆฌ ์ง์๋๋ฉด, ์ด๋ฅผ ์์
ํ๋ฆ์ ํตํฉํ๊ธฐ ์ํด ์ ์คํ ๊ณํ์ด ํ์ํ ๊ฒ์
๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ ๋ต์
๋๋ค:
1. ์ค์ํ CSS ์๋ณ
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ํ์ด์ง ์๋จ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ํ์์ ์ธ CSS ๊ท์น์ ์๋ณํ๋ ๊ฒ์ ๋๋ค. ์ด๋ CSS ์ฝ๋๋ฅผ ์๋์ผ๋ก ๊ฒ์ฌํ์ฌ ์ด๊ธฐ ํ์ด์ง ๋ ์ด์์๊ณผ ํต์ฌ ์ฝํ ์ธ ๋ฅผ ๋ด๋นํ๋ ์คํ์ผ์ ์๋ณํจ์ผ๋ก์จ ์ํํ ์ ์์ต๋๋ค. ๋๋ Intersection Observer API์ ๊ฐ์ ์๋ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ์์๋ฅผ ํ์ธํ ๋ค์ ํด๋น CSS ๊ท์น์ ์ถ์ถํ ์ ์์ต๋๋ค. ํ์ด์ง๋ฅผ ๋ถ์ํ๊ณ ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํ ์ค์ํ CSS๋ฅผ ์์ฑํ ์ ์๋ ์จ๋ผ์ธ "Critical CSS Extractor"๋ ์์ต๋๋ค. "critical css generator"๋ก ๊ฐ๋จํ ๊ฒ์ํ๋ฉด ์ฌ๋ฌ ์ต์ ์ ์ฐพ์ ์ ์์ต๋๋ค.
2. ํ๋ก์ธ์ค ์๋ํ
@optimize ๋๋ ํฐ๋ธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ Webpack, Parcel ๋๋ Gulp์ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์ค์ํ CSS๋ฅผ ์๋์ผ๋ก ์ถ์ถํ์ฌ HTML์ ์ธ๋ผ์ธ์ผ๋ก ์ฝ์
ํ๊ณ ๋๋จธ์ง ์คํ์ผ์ ์ง์ฐ ๋ก๋ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. @optimize ๋๋ ํฐ๋ธ ํตํฉ์ ์ง์ํ๋ ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ฉด ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
3. ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
@optimize ๋๋ ํฐ๋ธ๋ฅผ ๊ตฌํํ ํ์๋ ์ต์ ํ๊ฐ ์ํ๋ ํจ๊ณผ๋ฅผ ๋ด๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Google PageSpeed Insights, WebPageTest ๋๋ Lighthouse์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ๋ก๋ฉ ์๊ฐ, ๋ ๋๋ง ์ฑ๋ฅ ๋ฐ ๊ธฐํ ์ฃผ์ ์งํ๋ฅผ ์ธก์ ํ์ธ์. ์ด๋ฌํ ์งํ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋ถ์ํ์ฌ ์ถ๊ฐ ์ต์ ํ ์์ญ์ ์๋ณํ๊ณ @optimize ๋๋ ํฐ๋ธ๋ฅผ ๊ทธ์ ๋ง๊ฒ ๋ฏธ์ธ ์กฐ์ ํ์ธ์.
๋์ ๋ฐ ํด๋ฐฑ (์ง์์ ๊ธฐ๋ค๋ฆฌ๋ ๋์)
@optimize ๋๋ ํฐ๋ธ๋ ์์ง ๋๋ฆฌ ์ง์๋์ง ์์ผ๋ฏ๋ก, ๊ทธ๋์์๋ CSS ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ธฐ์ ์ ์์กดํด์ผ ํฉ๋๋ค.
1. ์ถ์ ๋ฐ ์์ถ
CSS ์ฝ๋๋ฅผ ์ถ์ํ๋ฉด ๊ณต๋ฐฑ ๋ฐ ์ฃผ์๊ณผ ๊ฐ์ ๋ถํ์ํ ๋ฌธ์๊ฐ ์ ๊ฑฐ๋์ด ํ์ผ ํฌ๊ธฐ๊ฐ ์ค์ด๋ญ๋๋ค. ์์ถ(์: Gzip ๋๋ Brotli ์ฌ์ฉ)์ ํ์ผ ํฌ๊ธฐ๋ฅผ ๋์ฑ ์ค์ฌ ๋ค์ด๋ก๋ ์๋๋ฅผ ๋์ ๋๋ค. ๋๋ถ๋ถ์ ๋น๋ ๋๊ตฌ์ CDN์ ์ถ์ ๋ฐ ์์ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
2. ์ฝ๋ ๋ถํ
์ฝ๋ ๋ถํ ์ CSS ์ฝ๋๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฒญํฌ๋ก ๋๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ ํน์ ํ์ด์ง๋ ๊ตฌ์ฑ ์์์ ํ์ํ CSS ๊ท์น๋ง ๋ค์ด๋ก๋ํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. Webpack ๋ฐ Parcel๊ณผ ๊ฐ์ ๋๊ตฌ๋ ์ฝ๋ ๋ถํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
3. ์ฌ์ฉํ์ง ์๋ CSS ์ ๊ฑฐ
์ฌ์ฉํ์ง ์๋ CSS ๊ท์น์ ์ ๊ฑฐํ๋ฉด ์คํ์ผ์ํธ์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. PurgeCSS ๋ฐ UnCSS์ ๊ฐ์ ๋๊ตฌ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ์ง ์๋ CSS ๊ท์น์ ์๋์ผ๋ก ์๋ณํ๊ณ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
4. ์ค์ํ ์์ฐ ๋ฏธ๋ฆฌ ๋ก๋
<link rel="preload"> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์ค์ํ CSS ์์ฐ์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฌํ ์์ฐ์ ๋ฐ๊ฒฌํ๊ณ ๋ค์ด๋ก๋ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ฌ ์ด๊ธฐ ๋ ๋๋ง ์๊ฐ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
5. ํฐํธ ์ต์ ํ
ํฐํธ ํ์ผ์ ์๋นํ ํด ์ ์์ผ๋ฉฐ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์น ์์ ํฐํธ๋ฅผ ์ฌ์ฉํ๊ณ , ํฐํธ ํ์ผ์ ์๋ธ์ธํ
ํ๊ณ , ํฐํธ๊ฐ ๋ก๋๋๋ ๋์ ์ด๋ป๊ฒ ํ์๋ ์ง ์ ์ดํ๊ธฐ ์ํด font-display ์์ฑ์ ์ฌ์ฉํ์ฌ ํฐํธ๋ฅผ ์ต์ ํํ์ธ์. ์๋ฅผ ๋ค์ด, `font-display: swap;`์ ์ฌ์ฉํ๋ฉด ์ปค์คํ
ํฐํธ๊ฐ ์์ ํ ๋ก๋๋์ง ์์๋๋ผ๋ ํ
์คํธ๊ฐ ๋ณด์ด๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๋ ค์ฌํญ
CSS ์ต์ ํ ๊ธฐ์ ์ ๊ตฌํํ ๋๋ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ๋ค์ํ ์๊ตฌ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ๋คํธ์ํฌ ์ฐ๊ฒฐ์ฑ: ์ธ๊ณ ๊ฐ์ง์ ์ฌ์ฉ์๋ค์ ๋ค์ํ ์์ค์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ฆฐ ์ฐ๊ฒฐ์์๋ ์น์ฌ์ดํธ๊ฐ ๋น ๋ฅด๊ฒ ๋ก๋๋๋๋ก CSS๋ฅผ ์ต์ ํํ์ธ์.
- ๊ธฐ๊ธฐ ์ ํ: ์ฌ์ฉ์๋ ๋ฐ์คํฌํฑ, ๋ ธํธ๋ถ, ํ๋ธ๋ฆฟ, ์ค๋งํธํฐ ๋ฑ ๋ค์ํ ๊ธฐ๊ธฐ์์ ์น์ฌ์ดํธ์ ์ ์ํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ธฐ๊ธฐ์์ ์น์ฌ์ดํธ๊ฐ ์ ๋ณด์ด๊ณ ์ ์๋ํ๋๋ก CSS๋ฅผ ์ต์ ํํ์ธ์. ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
- ํ์งํ: ๋ค์ํ ์ธ์ด์ ์ฐ๊ธฐ ๋ฐฉํฅ์ ์ง์ํ๋๋ก CSS๋ฅผ ์กฐ์ ํ์ธ์. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ์ธ์ด์ ๋ค๋ฅธ ํฐํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ์ธ์ด์ ๋ง๊ฒ ๋ ์ด์์์ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ: CSS๊ฐ ์ฅ์ ๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ์ธ์. ์๋งจํฑ HTML์ ์ฌ์ฉํ๊ณ , ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ๋ฅผ ํ์ํ ์ ์๋๋ก ํ์ธ์. ์์ ๋๋น ๋น์จ์ ์ ์ํ๊ณ ์ฌ์ฉ์๊ฐ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ ์ต์ ์ ์ ๊ณตํ์ธ์.
CSS ์ต์ ํ์ ๋ฏธ๋
@optimize ๋๋ ํฐ๋ธ์ ๋์
์ CSS ์ต์ ํ์ ์งํ์ ์์ด ์ค์ํ ์ง์ ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๋๋ ํฐ๋ธ๊ฐ ๋ ๋๋ฆฌ ์ง์๋จ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๋ ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋ ๊ฒ์
๋๋ค. ์์ ํ ๊ตฌํ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์, ์ถ์, ์ฝ๋ ๋ถํ , ์ค์ํ CSS ์ธ๋ผ์ด๋๊ณผ ๊ฐ์ ํ์ฌ์ ๋ชจ๋ฒ ์ฌ๋ก์ ์ง์คํ๋ฉด ์ค๋๋ ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ๋ฏธ๋์ `@optimize`๋ฅผ ๋ ์ฝ๊ฒ ์ฑํํ ์ ์๋๋ก ์ค๋นํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
CSS @optimize ๋๋ ํฐ๋ธ๋ ์น ์ฑ๋ฅ์ ํ์ ํ ์์ฒญ๋ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์ง ์คํ ๋จ๊ณ์ด์ง๋ง, ๊ทธ ์ ์ฌ๋ ฅ์ ์ดํดํ๊ณ ํ์ฌ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํ๋ฉด ์น์ฌ์ดํธ๊ฐ ๋ ๋นจ๋ฆฌ ๋ก๋๋๊ณ , ์ฌ์ฉ์๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฐธ์ฌ์ํค๋ฉฐ, ๋ ๋์ ๊ฒ์ ์์ง ์์๋ฅผ ๋ฌ์ฑํ๋ ๋ฏธ๋๋ฅผ ์ค๋นํ ์ ์์ต๋๋ค. ์ฑ๋ฅ ์ต์ ํ์ ์์น์ ๋ฐ์๋ค์ด๋ฉด ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ฆ๊ฒ๊ฒ ํ๋ ์น ๊ฒฝํ์ ๋ง๋ค ์ ์์ ๊ฒ์
๋๋ค.